from flask import Flask
import os
from dotenv import load_dotenv

# 加载环境变量
load_dotenv()

# 创建Flask应用实例
app = Flask(__name__, static_folder='static', static_url_path='/static')

# 配置应用
app.config['JSON_AS_ASCII'] = False  # 支持中文显示
app.config['DEBUG'] = os.environ.get('FLASK_DEBUG', 'True').lower() == 'true'  # 从环境变量加载调试模式设置

# 导入并注册蓝图
try:
    from controllers.chinese_words_controller import words_bp  # 新增词语控制器
    
    from controllers.book_controller import books_bp  # 新增书籍控制器
    from controllers.wechat_controller import wechat_bp  # 新增微信登录控制器
    # 注册蓝图
    app.register_blueprint(words_bp, url_prefix='/api/words')  # 注册词语控制器，前缀为/api/words
    app.register_blueprint(books_bp, url_prefix='/api/books')  # 注册书籍控制器，前缀为/api/books
    app.register_blueprint(wechat_bp, url_prefix='/api/wechat')  # 注册微信登录控制器，前缀为/api/wechat
    
except ImportError as e:
    print(f"警告: 无法导入控制器: {e}")
    print("请确保controllers目录和相关文件已创建")

# 错误处理
@app.errorhandler(404)
def page_not_found(e):
    return {'message': '资源不存在', 'error': str(e), 'status_code': 404}, 404

@app.errorhandler(500)
def internal_server_error(e):
    return {'message': '服务器内部错误', 'error': str(e), 'status_code': 500}, 500

# 启动应用
if __name__ == '__main__':
    # 确保必要的目录存在
    # for dir_name in ['controllers', 'models', 'services', 'utils', 'static', 'static/images']:
    #     if not os.path.exists(dir_name):
    #         os.makedirs(dir_name)
    #         print(f"创建目录: {dir_name}")
    
    # 从环境变量获取主机和端口配置
    host = os.environ.get('FLASK_HOST', '0.0.0.0')
    port = int(os.environ.get('FLASK_PORT', 5000))
    
    # 运行应用，已在配置中设置debug模式
    app.run(host=host, port=port)